home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 42 / Amiga Format AFCD42 (Issue 126, Aug 1999).iso / -serious- / comms / other / slrn / slrn_src / src / chkslang.c < prev    next >
C/C++ Source or Header  |  1999-05-14  |  3KB  |  106 lines

  1. /* Copyright (c) 1998 John E. Davis (davis@space.mit.edu)
  2.  *
  3.  * This file is part of slrn.
  4.  *
  5.  * Slrn is free software; you can redistribute it and/or modify it
  6.  * under the terms of the GNU General Public License as published by the
  7.  * Free Software Foundation; either version 2, or (at your option) any
  8.  * later version.
  9.  * 
  10.  * Slrn is distributed in the hope that it will be useful, but WITHOUT
  11.  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  12.  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  13.  * for more details.
  14.  * 
  15.  * You should have received a copy of the GNU General Public License
  16.  * along with Slrn; see the file COPYING.  If not, write to the Free
  17.  * Software Foundation, 59 Temple Place - Suite 330, 
  18.  * Boston, MA  02111-1307, USA.
  19.  */
  20.  
  21. /* It is too bad that this cannot be done at the preprocessor level.
  22.  * Unfortunately, C is not completely portable yet.  Basically the #error
  23.  * directive is the problem.
  24.  */
  25. #include "config.h"
  26.  
  27. #include <stdio.h>
  28. #ifdef VMS
  29. # include <ssdef.h>
  30. #endif
  31.  
  32. #ifdef HAVE_STDLIB_H
  33. # include <stdlib.h>
  34. #endif
  35.  
  36. #include <slang.h>
  37. #include "jdmacros.h"
  38.  
  39. #ifdef VMS
  40. # define SUCCESS    1
  41. # define FAILURE    2
  42. #else
  43. # define SUCCESS    0
  44. # define FAILURE    1
  45. #endif
  46.  
  47. static char *make_version (unsigned int v)
  48. {
  49.    static char v_string[16];
  50.    unsigned int a, b, c;
  51.    
  52.    a = v/10000;
  53.    b = (v - a * 10000) / 100;
  54.    c = v - (a * 10000) - (b * 100);
  55.    sprintf (v_string, "%u.%u.%u", a, b, c);
  56.    return v_string;
  57. }
  58.  
  59.  
  60.  
  61. int main (int argc, char **argv)
  62. {
  63.    unsigned int min_version, sl_version;
  64.    unsigned int sug_version;
  65.    int ret;
  66.    
  67.    if ((argc < 3) || (argc > 4))
  68.      {
  69.     fprintf (stderr, "Usage: %s <PGM> <SLANG-VERSION> <SUGG VERSION>\n", argv[0]);
  70.     return FAILURE;
  71.      }
  72. #ifndef SLANG_VERSION
  73.    sl_version = 0;
  74. #else
  75.    sl_version = SLANG_VERSION;
  76. #endif
  77.    
  78.    sscanf (argv[2], "%u", &min_version);
  79.    if (argc == 4) sscanf (argv[3], "%u", &sug_version);
  80.    else sug_version = sl_version;
  81.    
  82.    
  83.    ret = SUCCESS;
  84.    if (sl_version < min_version)
  85.      {
  86.     fprintf (stderr, "This version of %s requires slang version %s.\n",
  87.          argv[1], make_version(min_version));
  88.     ret = FAILURE;
  89.      }
  90.    
  91.    if (sl_version < sug_version)
  92.      {
  93.     fprintf (stderr, "Your slang version is %s.\n", make_version(sl_version));
  94.     fprintf (stderr, "To fully utilize this program, you should upgrade the slang library to\n");
  95.     fprintf (stderr, "  version %s\n", make_version(sug_version));
  96.     fprintf (stderr, "This library is available via anonymous ftp from\n\
  97. space.mit.edu in pub/davis/slang.\n");
  98.      }
  99.    
  100.    return ret;
  101. }
  102.  
  103.  
  104.  
  105.  
  106.